/*
 *    This file is part of BlobDB.
 *
 *    BlobDB is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    BlobDB is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with BlobDB.  If not, see <http://www.gnu.org/licenses/>.
 *    
 *    Copyright(c) 2011 Michael Kankkonen
 *    http://www.vnetcon.org
 */


package org.vnetcon.blobdb.driver.jdbc;

import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.net.URL;
import java.sql.Array;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Date;
import java.sql.NClob;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.RowId;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Map;

import org.vnetcon.xml.ws.servlet.ToXmlInterface;

public class BlobDBResultSet implements ResultSet {

	org.vnetcon.blobdb.database.ResultSet nativeRs = null;
	
	public BlobDBResultSet(org.vnetcon.blobdb.database.ResultSet nativeRs){
		this.nativeRs = nativeRs;
	}
	
	
	/**
	 * Not implemented!
	 */
	@Override
	public boolean isWrapperFor(Class<?> iface) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public <T> T unwrap(Class<T> iface) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean absolute(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void afterLast() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * This will move the cursor at the beginning of ResultSet
	 * 
	 */
	@Override
	public void beforeFirst() throws SQLException {
		this.nativeRs.resetCursor();
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void cancelRowUpdates() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void clearWarnings() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * This will not do anything. It will not throw exception because
	 * this is probably called many times in already implemented applications.
	 */
	@Override
	public void close() throws SQLException {
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void deleteRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int findColumn(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean first() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Array getArray(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Array getArray(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getAsciiStream(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getAsciiStream(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public BigDecimal getBigDecimal(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public BigDecimal getBigDecimal(String colName) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public BigDecimal getBigDecimal(int arg0, int arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public BigDecimal getBigDecimal(String arg0, int arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getBinaryStream(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getBinaryStream(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Blob getBlob(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Blob getBlob(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean getBoolean(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean getBoolean(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public byte getByte(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public byte getByte(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public byte[] getBytes(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public byte[] getBytes(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Reader getCharacterStream(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Reader getCharacterStream(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Clob getClob(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Clob getClob(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getConcurrency() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public String getCursorName() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Implemented
	 */
	@Override
	public Date getDate(int index) throws SQLException {
		Date retDate = null;
		try{
			String value = this.nativeRs.getString(index);
			int year = Integer.parseInt(value.substring(0, 4));
			int month = Integer.parseInt(value.substring(4, 6));
			int date = Integer.parseInt(value.substring(6, 8));
			Calendar cal = Calendar.getInstance();
			cal.set(year, month, date);
			retDate = new Date(cal.getTimeInMillis());
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return retDate;
	}

	/**
	 * Return Data value.
	 */
	@Override
	public Date getDate(String colName) throws SQLException {
		Date retDate = null;
		try{
			String value = this.nativeRs.getString(colName);
			int year = Integer.parseInt(value.substring(0, 4));
			int month = Integer.parseInt(value.substring(4, 6));
			int date = Integer.parseInt(value.substring(6, 8));
			Calendar cal = Calendar.getInstance();
			cal.set(year, month, date);
			retDate = new Date(cal.getTimeInMillis());
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return retDate;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Date getDate(int arg0, Calendar arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Date getDate(String arg0, Calendar arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * implemented
	 */
	@Override
	public double getDouble(int index) throws SQLException {
		double ret = -1;
		try{
			String value = this.nativeRs.getString(index);
			ret = Double.parseDouble(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return double value.
	 */
	@Override
	public double getDouble(String colName) throws SQLException {
		double ret = -1;
		try{
			String value = this.nativeRs.getString(colName);
			ret = Double.parseDouble(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getFetchDirection() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getFetchSize() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * implemented
	 */
	@Override
	public float getFloat(int index) throws SQLException {
		float ret = -1;
		try{
			String value = this.nativeRs.getString(index);
			ret = Float.parseFloat(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return float value.
	 */
	@Override
	public float getFloat(String colName) throws SQLException {
		float ret = -1;
		try{
			String value = this.nativeRs.getString(colName);
			ret = Float.parseFloat(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getHoldability() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * implemented
	 */
	@Override
	public int getInt(int index) throws SQLException {
		int ret = -1;
		try{
			String value = this.nativeRs.getString(index);
			ret = Integer.parseInt(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return int value.
	 */
	@Override
	public int getInt(String colName) throws SQLException {
		int ret = -1;
		try{
			String value = this.nativeRs.getString(colName);
			ret = Integer.parseInt(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * implemented
	 */
	@Override
	public long getLong(int index) throws SQLException {
		long ret = -1;
		try{
			String value = this.nativeRs.getString(index);
			ret = Long.parseLong(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return long value.
	 */
	@Override
	public long getLong(String colName) throws SQLException {
		long ret = -1;
		try{
			String value = this.nativeRs.getString(colName);
			ret = Long.parseLong(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Partially implemented
	 */
	@Override
	public ResultSetMetaData getMetaData() throws SQLException {
		return new BlobDBResultSetMetaData(this.nativeRs);
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Reader getNCharacterStream(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Reader getNCharacterStream(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public NClob getNClob(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public NClob getNClob(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public String getNString(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public String getNString(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Return sub query's ResultSet.
	 */
	@Override
	public Object getObject(int subQueryIndex) throws SQLException {
		try {
			BlobDBResultSet sqlRs = new BlobDBResultSet(this.nativeRs.getSubQuery(subQueryIndex));
			return sqlRs;
		} catch (Exception e) {
			throw new SQLException(e.getMessage());
		}
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Object getObject(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Object getObject(int arg0, Map<String, Class<?>> arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Object getObject(String arg0, Map<String, Class<?>> arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Ref getRef(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Ref getRef(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Return BlobDB's rowid for this row. Call toString from return RowId
	 * object to retrieve the actual rowid.
	 * 
	 */
	@Override
	public RowId getRowId(int arg0) throws SQLException {
		BlobDBRowId retId;
		try {
			retId = new BlobDBRowId(this.nativeRs.getRowid());
		} catch (Exception e) {
			throw new SQLException(e.getMessage());
		}
		return retId;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public RowId getRowId(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public SQLXML getSQLXML(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public SQLXML getSQLXML(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * implemented
	 */
	@Override
	public short getShort(int index) throws SQLException {
		short ret = -1;
		try{
			String value = this.nativeRs.getString(index);
			ret = Short.parseShort(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return short value.
	 */
	@Override
	public short getShort(String colName) throws SQLException {
		short ret = -1;
		try{
			String value = this.nativeRs.getString(colName);
			ret = Short.parseShort(value);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Statement getStatement() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * implemented
	 */
	@Override
	public String getString(int index) throws SQLException {
		try {
			return this.nativeRs.getString(index);
		} catch (Exception e) {
			throw new SQLException(e.getMessage());
		}
	}

	/**
	 * Return string value.
	 */
	@Override
	public String getString(String colName) throws SQLException {
		try {
			return this.nativeRs.getString(colName);
		} catch (Exception e) {
			throw new SQLException(e.getMessage());
		}
	}

	/**
	 * implemented
	 */
	@Override
	public Time getTime(int index) throws SQLException {
		Time ret = null;
		try{
			String value = this.nativeRs.getString(index);
			String hour = value.substring(0, 2);
			String min = value.substring(2, 4);
			String sec = value.substring(4, 6);
			ret = Time.valueOf(hour + ":" + min + ":" + sec);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Return Time value.
	 */
	@Override
	public Time getTime(String colName) throws SQLException {
		Time ret = null;
		try{
			String value = this.nativeRs.getString(colName);
			String hour = value.substring(0, 2);
			String min = value.substring(2, 4);
			String sec = value.substring(4, 6);
			ret = Time.valueOf(hour + ":" + min + ":" + sec);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Time getTime(int arg0, Calendar arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Time getTime(String arg0, Calendar arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * This will return the update/insert time as Timestamp retrieved from
	 * BlobDB's rowid. The argument is not used in this method so it can be anything.
	 */
	@Override
	public Timestamp getTimestamp(int arg0) throws SQLException {
		Timestamp ret = null;
		try{
			long timeInMills = -1;
			String parts[] = this.nativeRs.getRowid().split("\\.");
			String year = parts[3].substring(0, 4);
			String month = parts[3].substring(4, 6);
			String date = parts[3].substring(6, 8);
			String hour = parts[4].substring(0, 2);
			String min = parts[4].substring(2, 4);
			String sec = parts[4].substring(4, 6);
			String mills = parts[5];
			
			// yyyy-mm-dd hh:mm:ss.fffffffff
			ret = Timestamp.valueOf(year + "-" + month + "-" + date + " " + hour + ":" + min + ":" + sec + "." + mills);
		}catch(Exception ex){
			throw new SQLException(ex.getMessage());
		}
		return ret;
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Timestamp getTimestamp(String colName) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Timestamp getTimestamp(int arg0, Calendar arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public Timestamp getTimestamp(String arg0, Calendar arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public int getType() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public URL getURL(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public URL getURL(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getUnicodeStream(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public InputStream getUnicodeStream(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public SQLWarning getWarnings() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void insertRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean isAfterLast() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean isBeforeFirst() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean isClosed() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean isFirst() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean isLast() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean last() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void moveToCurrentRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void moveToInsertRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Moves to next row in ResultSet. Return true if there was a row where to move.
	 */
	@Override
	public boolean next() throws SQLException {
		return this.nativeRs.next();
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean previous() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void refreshRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean relative(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean rowDeleted() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean rowInserted() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean rowUpdated() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void setFetchDirection(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void setFetchSize(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateArray(int arg0, Array arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateArray(String arg0, Array arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(int arg0, InputStream arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(String arg0, InputStream arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(int arg0, InputStream arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(String arg0, InputStream arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(int arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateAsciiStream(String arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBigDecimal(int arg0, BigDecimal arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBigDecimal(String arg0, BigDecimal arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(int arg0, InputStream arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(String arg0, InputStream arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(int arg0, InputStream arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(String arg0, InputStream arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(int arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBinaryStream(String arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(int arg0, Blob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(String arg0, Blob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(int arg0, InputStream arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(String arg0, InputStream arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(int arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBlob(String arg0, InputStream arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBoolean(int arg0, boolean arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBoolean(String arg0, boolean arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateByte(int arg0, byte arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateByte(String arg0, byte arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBytes(int arg0, byte[] arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateBytes(String arg0, byte[] arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(int arg0, Reader arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(String arg0, Reader arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(int arg0, Reader arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(String arg0, Reader arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(int arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateCharacterStream(String arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(int arg0, Clob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(String arg0, Clob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(int arg0, Reader arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(String arg0, Reader arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(int arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateClob(String arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateDate(int arg0, Date arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateDate(String arg0, Date arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateDouble(int arg0, double arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateDouble(String arg0, double arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateFloat(int arg0, float arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateFloat(String arg0, float arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateInt(int arg0, int arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateInt(String arg0, int arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateLong(int arg0, long arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateLong(String arg0, long arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNCharacterStream(int arg0, Reader arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNCharacterStream(String arg0, Reader arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNCharacterStream(int arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNCharacterStream(String arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(int arg0, NClob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(String arg0, NClob arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(int arg0, Reader arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(String arg0, Reader arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(int arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNClob(String arg0, Reader arg1, long arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNString(int arg0, String arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNString(String arg0, String arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNull(int arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateNull(String arg0) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateObject(int arg0, Object arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateObject(String arg0, Object arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateObject(int arg0, Object arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateObject(String arg0, Object arg1, int arg2)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateRef(int arg0, Ref arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateRef(String arg0, Ref arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateRow() throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateRowId(int arg0, RowId arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateRowId(String arg0, RowId arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateSQLXML(int arg0, SQLXML arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateSQLXML(String arg0, SQLXML arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateShort(int arg0, short arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateShort(String arg0, short arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateString(int arg0, String arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateString(String arg0, String arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateTime(int arg0, Time arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateTime(String arg0, Time arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateTimestamp(int arg0, Timestamp arg1) throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public void updateTimestamp(String arg0, Timestamp arg1)
			throws SQLException {
		throw new SQLException("Not implemented.");
	}

	/**
	 * Not implemented!
	 */
	@Override
	public boolean wasNull() throws SQLException {
		throw new SQLException("Not implemented.");
	}

}
